#include "CPalette.h"
/*********************************************************/
#include <string.h>

bool	CPalette::Convert(unsigned char* ucColor, int iSize)
{
	// Dane o kolorach sa przyjmowane w palecie 24bpp
	// Piksele nalezy przekonwertowac do palety monochromatycznej
	// aby pozniej moc okreslic nasycenie koloru i zdecydowac
	// czy piksel ma byc czarny, czy bialy

	unsigned char * m_Tmp  = new unsigned char[iSize/3];

	int j=0;
	for(int i=0; i < iSize; i+=3)
	{
		// TODO: Sterowany parametr decyzyjny dla wyboru koloru
		int fMonohrome = (int)
			(0.299f*ucColor[i]+0.587*ucColor[i+1]+0.114*ucColor[i+2]) > g_ColorSep ? 255 : 0;

		m_Tmp[j++] = fMonohrome;

	}

	if(m_Converted) delete [] m_Converted;

	m_Converted = new unsigned char[iSize/3];
	memcpy(m_Converted, m_Tmp,  iSize/3);
  
	i_DataSize = iSize/3;

	delete [] m_Tmp;

	return true;
}


bool	CPalette::RollBack(unsigned char* ucColor, int iSize)
{
	unsigned char * m_Tmp = new unsigned char[iSize*3];
	memset(m_Tmp, 0, iSize*3);

	for(int i=0; i < iSize; i++){
		m_Tmp[i*3]= m_Tmp[i*3+2]= m_Tmp[i*3+1]=  ucColor[i];
	}
  
	if(m_Converted) delete [] m_Converted;

	m_Converted = new unsigned char[iSize*3];
	memcpy(m_Converted,m_Tmp, iSize*3);

	delete [] m_Tmp;

	i_DataSize = iSize*3;

	return true;
}
/*********************************************************/